user={"root":"123456","admin":"admin"}
sums=0
list1={}
list2={}
goods = {'F00001': {'name': '苹果', 'price': 1.2}, 'F00002': {'name': '香蕉', 'price': 5.5}, 'F00003': {'name': '西瓜', 'price': 30}, 'F00004': {'name': '水蜜桃', 'price': 10.5}}

#注册函数


#长度必须超过8位
def ulen(password):
    if len(password)<=8:
        return False
    else:
        return True

#包括大小写字母 数字 其它符号 以上四种的三种
def utype(password):
    psd=set()
    for i in password:
        if i.isdigit():
            psd.add("num")
        elif i.isupper():
            psd.add("upper")
        elif i.islower():
            psd.add("lower")
        else:
            psd.add("special")
    if len(psd)>=3:
        return True
    else:
        return False

#判断重复次数
def urepeat(password):
    for i in range(len(password)-3):
        if password.count(password[i:i+3])>=2:
            return 0
        else:
            return 1

#注册系统
def enroll():
    print("欢迎注册成为三乐购物系统会员：")
    uname=input("请输入您的用户名：")
    if uname in user:
        print("该用户名已被注册！")
    else:
        upasswd=input('''请设置您的密码（至少需要8位字符),建议您:
                            1.长度至少需要8位
                            2.包括大小写字母，数字，其他符号，以上四种至少三种
                            3.不能有长度超过或等于3的字串重复
                            ''')
        result=2
        print("温馨提示：")
        if ulen(upasswd):
            result+=1
            user[uname]=upasswd
            print(f"{uname}恭喜您注册成功")

            if utype(upasswd):
                result +=1
            else:
                print("您的密码没有由3种以上字符组成")

            if urepeat(upasswd):
                result +=1
            else:
                print("您的密码有超过或等于3的字符串重复")
            print(f"您的密码复杂度为{result}")

        else:
            print("注册失败 您的密码长度必须超过八位！！")




#登录函数
def login(username,passwd):
    if  username in user and passwd==user[username]:
        return True
    else:
        return False

#充值系统
def recharge():
    global sums
    sums +=int(input("请输入您要充值的金额："))
    print(f"您已经成功充值，您的余额为{sums}")
    return sums

#查看购物车
def shoppingcar():
    print("您的选购信息如下：")
    for i, j in list1.items():
        print(f"您选购的商品为{i},想购买的总价格为{j}")

#查看商品列表：
def commodity():
    for i in goods:
        print(f"商品编号：{i}       商品名称：{goods[i]['name']}     商品价格：{goods[i]['price']} ")

#加入购物车：
def add():
    i = input("请输入您要买的产品编号：")
    j = int(input("请输入您要购买的数量："))
    s = 0
    if i in goods:
        s += j * goods[i]['price']

        if goods[i]['name'] in list1:
            list1[goods[i]['name']] += s

        else:
            list1[goods[i]['name']] = s

        print(f"您想购买{goods[i]['name']},购买总价格为{list1[goods[i]['name']]},已经为您加入购物车")

#结算：
def settlement():
    global sums
    sums1 = 0
    global list1
    for i, j in list1.items():
        sums1 += j
    if sums1 > sums:
        print("你太穷了 买不起 先进行充值吧")
        print(f"清空购物车还需要充值{sums1-sums}")
    else:
        sums -= sums1
        for i,j in list1.items():
            if i in list2:
                list2[i] +=j
            else:
                list2[i]=j
        list1={}
        print(f"您选购的商品总价为{sums1},您的余额为{sums}")

while 1:
    print('''=========================嘿 请输入您的出行令牌========================================
========================1.还没有令牌 需要注册=============================================
========================2.已经注册 马上亮出===============================================
            ''')
    ss=input("请输入您要进行的操作：")
    if ss=='1':
        enroll()
    elif ss=='2':
        break
    else:
        print("输入超出范围，请重新输入")


username=input("来吧 请输入您的用户名：")
passwd=input("接下来是密码：")


#选购流程
if login(username,passwd):
    print('''
========================热烈欢迎各位精英进入三乐购物系统：=================================
========================请大家打开健康码行程码有序进场=====================================
        ''')
    sums=recharge()
    print(f"ok,已收到您的兜兜里面有{sums}元，", end="")
    if sums < 100:
        print("您可真穷 可以输入5进行充值")
    elif 100 <= sums <= 1000:
        print("看着还行")
    else:
        print("您可真是个大富婆")

    while 1:

        operate = input('''请输入要进行的操作：
                    1.查看购物车
                    2.查看商品列表
                    3.选购
                    4.结算
                    5.充值
                    ''')
        if operate == '1':
            shoppingcar()

        elif operate == '2':
            commodity()

        elif operate == '3':
            add()

        elif operate == '4':
            settlement()

        elif operate == '5':
            recharge()

        elif operate == 'exit':
            break
        else:
            print("您的输入超出范围，操作重新开始")

    print("===================================系统退出成功！！=================================================")
    for i, j in list2.items():
        print(f"您选购的商品为{i},购买的总价格为{j}")
    print(f"您的余额还剩{sums},欢迎下次光临")

else:
    print("哦嚯 您没有入场的资格 拜拜")